package com.tabjin.rfidsocket.service.sys;

import com.tabjin.rfidsocket.pojo.dto.AclModuleLevelDTO;
import com.tabjin.rfidsocket.pojo.dto.DeptLevelDTO;

import java.util.List;
import java.util.Set;

/**
 * 计算树结构
 */
public interface SysTreeService {
    /**
     * 返回部门树
     *
     * @return
     */
    List<DeptLevelDTO> deptTree();

    /**
     * 单个部门树
     * @param id
     * @return
     */
    List<DeptLevelDTO> deptTree(Integer id);

    /**
     * 角色权限树（所有）
     *
     * @param roleId 角色id
     * @return
     */
    List<AclModuleLevelDTO> roleTree(Integer roleId);

    /**
     * 权限模块树
     *
     * @return
     */
    List<AclModuleLevelDTO> aclModuleTree();

    /**
     * 当前用户已有权限组成的树
     *
     * @param userId
     * @return
     */
    List<AclModuleLevelDTO> userAclTree(Integer userId);

    Set<String> userAclNamesByUserId(Integer userId);
}
